home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Creative Review 28
/
Creative-Review-CD-ROM-28.iso
/
pc
/
kungfu
/
assets
/
game.dir
/
00055_Script_fling class
< prev
next >
Wrap
Text File
|
1997-08-08
|
5KB
|
243 lines
-- fling class method
-- --------------------------------------------------
property data
property cell
property move
property type
property direction
property ducks
property ancestor
property velocity
property updategap
property celloffset
property actualloc
-- --------------------------------------------------
global gtime
global gplayer
global gcell
global gfling
-- ==================================================
-- new method
-- --------------------------------------------------
on new me, props
minit me, props
return me
end mnew
-- ==================================================
-- minit method
-- --------------------------------------------------
on minit me, props
-- put "in minit fling"
set data = getaprop ( props, #data )
set cell = getaprop ( props, #cell )
set type = getaprop ( props, #type )
set move = getaprop ( props, #move )
set direction = getaprop ( props, #direction )
set ducks = checkaprop ( props, #ducks, [:] )
set celloffset = mgetflingoffset ( gcell, direction , data )
set animdata = getaprop ( props, #animdata )
set ancestor = new ( script "anim class" , animdata )
set draw = new ( script "draw class" , props )
msetdraw me, [ draw ]
set velocity = point ( 17, 0 )
case direction of
#left: set velocity = - velocity
end case
set updategap = 2
msetcell me
-- put "out minit fling"
end minit
-- ==================================================
-- mstart method
-- --------------------------------------------------
on mstart me
-- put "in mstart fling"
mstart ancestor, me
if ( cell >= ( the cell of gplayer - 1 )) and ( cell <= ( the cell of gplayer + 4 ) ) then
-- put "fling hit!"
mhit me, true
return false
else maddtask gtime, me, the timer
-- put "out mstart fling"
end mstart
-- ==================================================
-- mdotask method
-- --------------------------------------------------
on mdotask me
-- put "in mdotask fling"
if mcheckedges ( me ) then return false
if mcheckhit ( me ) then
-- put "fling hit!"
mhit me, false
return false
end if
mfling me
-- put "out mdotask fling"
return updategap
end mdotask
-- ==================================================
-- mhit method
-- --------------------------------------------------
on mhit me, direct
-- put "in mhit fling"
if mcheckblock ( gplayer, move ) then
mmove gsound, data, #flingblock
set animname = #block
else
mslap gsound, data
set animname = #hit
mfling me
if direct then
mabort gplayer
mstun gplayer
else
mdodamage gplayer, 30
end if
end if
mdie me
mhit gfling, data, actualloc, animname
-- put "in mhit fling"
end mhit
-- ==================================================
-- mcheckhit method
-- --------------------------------------------------
on mcheckhit me
-- put "in mcheckhit fling"
case ( the direction of me ) of
#left: set playercell = (the cell of gplayer + 2)
#right: set playercell = (the cell of gplayer )
end case
if cell = playercell then
if not ( getone ( ducks , ( the currentmove of gplayer ) ) ) then
return true
end if
end if
-- put "out mcheckhit fling"
return false
end mcheckhit
-- ==================================================
-- mcheckedges method
-- --------------------------------------------------
on mcheckedges me
-- put "in mcheckedges fling"
case direction of
#left:
if cell < 0 then
mdie ( me )
return true
end if
#right:
if cell > 31 then
mdie ( me )
return true
end if
end case
-- put "out mcheckedges fling"
return false
end mcheckedges
-- ==================================================
-- msetcell method
-- --------------------------------------------------
on msetcell me
set actualloc = ( the loc of me ) - celloffset
set cell = mscreen2cell ( gcell, the loch of actualloc )
end msetcell
-- ==================================================
-- mfling method
-- --------------------------------------------------
on mfling me
mmove me, velocity
msetcell me
end mfling me
-- ==================================================
-- manimfinish method
-- --------------------------------------------------
on manimfinish me
-- put "in manimfinish: "
mstart ancestor, me
-- put "out manimfinish: "
end manimfinish
-- ==================================================
-- mdie method
-- --------------------------------------------------
on mdie me
-- put "in mdie fling"
mabort ancestor
mhide me
mreturnthedead gfling , me
-- put "out mdie fling"
end mdie